import random

import torch

SEED = 42  # 随机数种子
random.seed(SEED)  # 设置随机数种子

"""
设置PyTorch的随机数种子，确保实验的可重复性。
具体说明：
torch.manual_seed(SEED)：为CPU上的随机数生成器设置种子值
1.作用是让每次运行代码时产生的随机数序列保持一致
2.这样可以确保模型训练结果的可复现性
3.SEED是一个预定义的整数常量
"""
torch.manual_seed(SEED)  # 设置CPU随机数种子

"""
这些常量通常用于自然语言处理任务中，帮助模型识别序列的边界和处理变长输入。
"""
PAD_IDX = 0  # 填充标记的索引，用于将不同长度的序列填充到相同长度
BOS_IDX = 1  # 序列开始标记的索引（Begin of Sequence）
EOS_IDX = 2  # 序列结束标记的索引（End of Sequence）

VOCAB_BASE = 3  # 基础词汇数量
VOCAB_DIGITS = 10  # 数字字符数量（0-9）
SRC_VOCAB_SIZE = VOCAB_BASE + VOCAB_DIGITS  # 源语言词汇数量
TGT_VOCAB_SIZE = VOCAB_BASE + VOCAB_DIGITS  # 目标语言词汇数量

D_MODEL = 512  # 模型维度
N_HEADS = 8  # 注意力头数

NUM_ENCODER_LAYERS = 6  # 编码器层数
NUM_DECODER_LAYERS = 6  # 解码器层数

DIM_FF = 2048  # 前向传播隐藏层维度
DROPOUT = 0.1  # 丢弃概率
MAX_LAN = 32  # 最大序列长度

BATCH_SIZE = 64  # 批量大小
NUM_EPOCHS = 10  # 训练轮数
LEARNING_RATE = 3e-4  # 学习率

DEVICE = torch.device('cuda' if torch.cuda.is_available() else 'cpu')  # 设备
